{\rtf1\ansi\ansicpg1252\uc1 \deff0\deflang1033\deflangfe1033{\fonttbl{\f0\froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f2\fmodern\fcharset0\fprq1{\*\panose 02070309020205020404}Courier New;}
{\f5\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Helvetica{\*\falt Arial};}{\f9\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Helv;}{\f11\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}MS Sans Serif;}}
{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;
\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}{\stylesheet{\nowidctlpar\adjustright \fs20 \snext0 Normal;}{\s1\sb240\nowidctlpar\adjustright \b\f9\ul \sbasedon0 \snext0 heading 1;}{
\s2\sb120\nowidctlpar\adjustright \b\f9 \sbasedon0 \snext0 heading 2;}{\s3\li360\nowidctlpar\adjustright \b \sbasedon0 \snext17 heading 3;}{\s4\li360\nowidctlpar\adjustright \ul \sbasedon0 \snext17 heading 4;}{\s5\li720\nowidctlpar\adjustright \b\fs20 
\sbasedon0 \snext17 heading 5;}{\s6\li720\nowidctlpar\adjustright \fs20\ul \sbasedon0 \snext17 heading 6;}{\s7\li720\nowidctlpar\adjustright \i\fs20 \sbasedon0 \snext17 heading 7;}{\s8\li720\nowidctlpar\adjustright \i\fs20 \sbasedon0 \snext17 heading 8;}{
\s9\li720\nowidctlpar\adjustright \i\fs20 \sbasedon0 \snext17 heading 9;}{\*\cs10 \additive Default Paragraph Font;}{\*\cs15 \additive \fs16\up6\lang1033 \sbasedon10 footnote reference;}{\s16\nowidctlpar\adjustright \fs20 \sbasedon0 \snext16 
footnote text;}{\s17\li720\nowidctlpar\adjustright \fs20 \sbasedon0 \snext17 Normal Indent;}{\s18\fi-240\li480\sb80\nowidctlpar\tx480\adjustright \f5 \sbasedon0 \snext18 nscba;}{\s19\fi-240\li240\sa20\nowidctlpar\adjustright \f5 \sbasedon0 \snext19 j;}{
\s20\li480\sa20\nowidctlpar\adjustright \f5 \sbasedon0 \snext20 ij;}{\s21\sb80\sa20\nowidctlpar\adjustright \f5 \sbasedon0 \snext21 btb;}{\s22\fi-240\li2400\sb20\sa20\nowidctlpar\adjustright \f5\fs20 \sbasedon0 \snext22 ctcb;}{
\s23\fi-240\li480\sa40\nowidctlpar\tx480\adjustright \f5 \sbasedon0 \snext23 ns;}{\s24\sa120\nowidctlpar\adjustright \f5\fs28 \sbasedon0 \snext24 TT;}{\s25\fi-240\li2400\sa20\nowidctlpar\adjustright \f5 \sbasedon0 \snext25 crtj;}{
\s26\fi-240\li480\nowidctlpar\tx480\adjustright \f5 \sbasedon0 \snext26 nsca;}{\s27\sa20\nowidctlpar\adjustright \f5 \sbasedon0 \snext27 bt;}{\s28\li240\sb120\sa40\nowidctlpar\adjustright \f5 \sbasedon0 \snext28 Hf;}{
\s29\li240\sb120\sa40\nowidctlpar\adjustright \f5 \sbasedon0 \snext29 Hs;}{\s30\li480\sb120\sa40\nowidctlpar\adjustright \f5 \sbasedon0 \snext30 RT;}{\s31\fi-2160\li2160\sb240\sa80\nowidctlpar\tx2160\adjustright \f5 \sbasedon0 \snext31 c;}{
\s32\li2160\sa20\nowidctlpar\adjustright \f5 \sbasedon0 \snext32 ct;}{\s33\li240\sa20\nowidctlpar\adjustright \f5 \sbasedon0 \snext33 it;}{\s34\li480\nowidctlpar\adjustright \f5\fs20 \sbasedon0 \snext34 nsct;}{
\s35\fi-160\li400\sb80\sa40\nowidctlpar\adjustright \f5 \sbasedon0 \snext35 nscb;}{\s36\fi-2640\li2880\sb120\sa40\nowidctlpar\brdrb\brdrs\brdrw15 \brdrbtw\brdrs\brdrw15 \tx2880\adjustright \f5 \sbasedon0 \snext36 HC2;}{
\s37\fi-2640\li2880\sb120\sa20\nowidctlpar\tx2880\adjustright \f5 \sbasedon0 \snext37 C2;}{\s38\fi-240\li2400\sa20\nowidctlpar\adjustright \f5\fs20 \sbasedon0 \snext38 ctc;}{\s39\li2160\sb160\nowidctlpar\adjustright \f5 \sbasedon0 \snext39 crt;}{
\s40\li480\sb20\sa40\nowidctlpar\adjustright \f5 \sbasedon0 \snext40 or;}{\s41\fi-259\li360\sb40\sa40\nowidctlpar\tx360\adjustright \f11\fs20 \sbasedon0 \snext41 Ln1;}{\s42\li115\sb80\sa80\nowidctlpar\adjustright \f11\fs20 \sbasedon0 \snext0 *Intro;}{
\s43\li115\sb80\sa80\keepn\nowidctlpar\adjustright \b\f11 \sbasedon3 \snext42 *Title;}{\s44\fi-245\li360\sb80\nowidctlpar\adjustright \f11\fs20 \snext44 *Jl;}{\s45\li360\sb40\sa40\nowidctlpar\adjustright \f11\fs20 \snext0 Lp1;}{
\s46\fi-1800\li1915\sb60\sl-240\slmult0\nowidctlpar\tx1915\adjustright \f11\fs20 \sbasedon0 \snext46 Tph;}{\s47\li115\sb120\sa80\nowidctlpar\adjustright \b\f11\fs20 \snext41 Proch;}{\*\cs48 \additive \super \sbasedon10 endnote reference;}}{\info
{\author David Broman}{\operator James Smith}{\creatim\yr1993\mo11\dy4\hr18\min38}{\revtim\yr1999\mo10\dy13\hr17\min50}{\version392}{\edmins258}{\nofpages9}{\nofwords1488}{\nofchars8485}{\*\company Vapour Technology}{\nofcharsws0}{\vern113}}
\widowctrl\ftnbj\aenddoc\hyphcaps0\viewkind4\viewscale100 \fet0\sectd \linex0\headery709\footery709\colsx709\endnhere\sectdefaultcl {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang{\pntxta .}}
{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang{\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}
{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}\pard\plain \sl240\slmult0
\widctlpar\adjustright \fs20 {\cs15\fs16\up6 #{\footnote \pard\plain \sl240\slmult0\widctlpar\adjustright \fs20 {\cs15\fs16\up6 #}{ HIDD_SPINDOCTOR_DIALOG}}}{\cs15\fs16\up6 #{\footnote \pard\plain \sl240\slmult0\widctlpar\adjustright \fs20 {
\cs15\fs16\up6 #}{ HIDD_ABOUT_DIALOG}}#{\footnote \pard\plain \sl240\slmult0\widctlpar\adjustright \fs20 {\cs15\fs16\up6 #}{ HIDD_CREDITS_DIALOG}}}{\fs16\up6  }{\cs15\fs16\up6 ${\footnote \pard\plain \s16\nowidctlpar\adjustright \fs20 {\cs15\fs16\up6 $}{
 Main Window}}}{\b\f9\fs24\up6  SpinDoctor Help}{\f9 
\par 
\par }\pard \widctlpar\adjustright {\f9 The main SpinDoctor
 dialog contains a number of input boxes, and the output box. It also contains a number of buttons for copying and moving the result around, and also a number of tabs which contain the operations that you can perform.  The controls in t
he main window are explained below. For more information on the controls shown in the operations pane, click one of the following links:
\par }\pard \fi720\widctlpar\adjustright {\f9\uldb Vector Tab}{\v\f9 HIDD_VECTOR_TAB}{\f9 
\par }\pard\plain \s16\fi720\widctlpar\adjustright \fs20 {\f9\uldb Scalar Tab}{\v\f9 HIDD_SCALAR_TAB}{\f9 
\par }\pard\plain \fi720\widctlpar\adjustright \fs20 {\f9\uldb Rotation Tab}{\v\f9 HIDD_ROTATION_TAB}{\f9 
\par }\pard \widctlpar\adjustright {\f9 
\par Alternatively, you can take a look at a full list of }{\f9\uldb operations}{\v\f9 HID_OPERATIONS}{\f9  available. You can also learn about the }{\f9\uldb data types}{\v\f9 HID_DATA_TYPES}{\f9  that SpinDoctor uses.
\par 
\par }{\cs15\f9\fs16\up6 #{\footnote \pard\plain \s16\nowidctlpar\adjustright \fs20 {\cs15\fs16\up6 #}{ HIDP_INPUT_A}}}{\b\f9 Input A}{\f9 
\par This is the first input box. Write the first value used in your calculation in here. Some operations only use this box. You can only write correctly formatted numbers in this box. If you find that the box doesn\rquote 
t accept your input, then you are not writing a number in an acceptable format. Also, the box will only accept up to ten numbers.Only four are use
d by the program, but ten are allowed in the box for ease of use. Well-formatted numbers take the following form:
\par \tab [-] [}{\i\f9 digits}{\f9 ] [ .}{\i\f9 digits}{\f9 ] [\{E | e\} [-] }{\i\f9 digits}{\f9 ]
\par }\pard\plain \s16\widctlpar\adjustright \fs20 {\f9 At least one of the first two sets of digits must be present if the exponent is to appear.
\par 
\par }\pard\plain \widctlpar\adjustright \fs20 {\cs15\f9\fs16\up6 #{\footnote \pard\plain \s16\nowidctlpar\adjustright \fs20 {\cs15\fs16\up6 #}{ HIDP_INPUT_B}}}{\b\f9 Input B}{\f9 
\par }\pard\plain \s16\widctlpar\adjustright \fs20 {\f9 
This is the second input box. Write the second value used in your calculation in here. You can only write correctly formatted numbers in this box, in the same format as for the first input box shown above.
\par 
\par }\pard\plain \widctlpar\adjustright \fs20 {\cs15\f9\fs16\up6 #{\footnote \pard\plain \s16\nowidctlpar\adjustright \fs20 {\cs15\fs16\up6 #}{ HIDP_RESULT}}}{\b\f9 Result Box}{\f9 
\par This is where the results of your calculations will appear.
\par 
\par }{\b\f9 Precision}{\f9 
\par You can select the maximum number of decimal places that your results will be displayed at using this box. The minimum is 0, the maximum is 9. Note that this is the number of decimal places, not significant digits. This value is saved between uses of 
SpinDoctor.
\par 
\par }{\cs15\f9\fs16\up6 #{\footnote \pard\plain \s16\nowidctlpar\adjustright \fs20 {\cs15\fs16\up6 #}{ HIDP_PASTE}}}{\b\f9 Paste}{\f9 
\par These buttons paste the contents of the clipboard into the appropriate input box.
\par 
\par }{\cs15\f9\fs16\up6 #{\footnote \pard\plain \s16\nowidctlpar\adjustright \fs20 {\cs15\fs16\up6 #}{ HIDP_COPY}}}{\b\f9 Copy to Clipboard}{\f9 
\par This button copies the text from the result box onto the clipboard.
\par 
\par }{\cs15\f9\fs16\up6 #{\footnote \pard\plain \s16\nowidctlpar\adjustright \fs20 {\cs15\fs16\up6 #}{ HIDP_COPYTO}}}{\b\f9 Copy to...}{\f9 
\par These two buttons copy the text from the result box into Input A or B respectively.
\par 
\par }{\cs15\f9\fs16\up6 #{\footnote \pard\plain \s16\nowidctlpar\adjustright \fs20 {\cs15\fs16\up6 #}{ HIDP_SWAP}}}{\b\f9 Swap}{\f9 
\par }\pard\plain \s16\widctlpar\adjustright \fs20 {\f9 This button swaps the contents of the two input boxes.
\par 
\par }\pard\plain \widctlpar\adjustright \fs20 {\cs15\f9\fs16\up6 #{\footnote \pard\plain \s16\nowidctlpar\adjustright \fs20 {\cs15\fs16\up6 #}{ HIDP_ANGLE_TYPE}}}{\b\f9 Radians / Degrees}{\f9 
\par These two radio buttons select the angle type that is used in various operations. Only one can be selected at a time. The operations affected by this setting are:
\par }\pard \fi720\widctlpar\adjustright {\f9\uldb Angle}{\v\f9 HIDP_ANGLE}{\f9 
\par }{\f9\uldb Convert}{\v\f9 HIDP_CONVERT}{\f9 
\par }{\f9\uldb Sine}{\v\f9 HIDP_SIN}{\f9 
\par }{\f9\uldb Cosine}{\v\f9 HIDP_COS}{\f9 
\par }{\f9\uldb Tangent}{\v\f9 HIDP_TAN}{\f9 
\par }\pard \widctlpar\adjustright {\f9 
The Angle and Convert operations output their result in either radians or degrees, depending on the setting, and the three trigonometric functions use the setting to determine the type of the input. See the detailed description of the operation for more i
nformation on how the setting of the angle type affects the result. This value is saved between uses of SpinDoctor.
\par 
\par }{\cs15\f9\fs16\up6 #{\footnote \pard\plain \s16\nowidctlpar\adjustright \fs20 {\cs15\fs16\up6 #}{ HIDP_ONTOP}}}{\b\f9 Always on top}{\f9 
\par If this box is checked, SpinDoctor will permanently float above all other windows. If not, it will go into the background like any normal window. This value is saved between uses of SpinDoctor.
\par 
\par }{\cs15\f9\fs16\up6 #{\footnote \pard\plain \s16\nowidctlpar\adjustright \fs20 {\cs15\fs16\up6 #}{ HIDP_OPERATIONS}}}{\b\f9 Operations}{\f9 
\par For more information on the controls shown in the operations pane, click one of the following links:
\par }\pard \fi720\widctlpar\adjustright {\f9\uldb Vector Tab}{\v\f9 HIDD_VECTOR_TAB}{\f9 
\par }\pard\plain \s16\fi720\widctlpar\adjustright \fs20 {\f9\uldb Scalar Tab}{\v\f9 HIDD_SCALAR_TAB}{\f9 
\par }\pard\plain \fi720\widctlpar\adjustright \fs20 {\f9\uldb Rotation Tab}{\v\f9 HIDD_ROTATION_TAB}{\f9 
\par }\pard \sl240\slmult0\widctlpar\adjustright {\f9 \page }{\cs15\fs16\up6 #{\footnote \pard\plain \sl240\slmult0\widctlpar\adjustright \fs20 {\cs15\fs16\up6 #}{ HIDD_VECTOR_TAB}}${\footnote \pard\plain \s16\nowidctlpar\adjustright \fs20 {\cs15\fs16\up6 $}{
 Main Window}}}{\fs16\up6  }{\b\f9\fs24\up6  Vector Tab}{\f9 
\par 
\par }\pard \widctlpar\adjustright {\f9 This tab contains operations that can be applied to }{\f9\uldb 3D vectors}{\v\f9 HID_DATA_TYPES}{\f9 .
\par 
\par }{\b\f9 Add}{\f9 
\par This button adds two scalars, vectors or rotations. For more information see the description of }{\f9\uldb Add}{\v\f9 HIDP_ADD}{\f9 
\par }\pard\plain \s16\widctlpar\adjustright \fs20 {\f9 
\par }\pard\plain \widctlpar\adjustright \fs20 {\b\f9 Subtract}{\f9 
\par This button subtracts two scalars, vectors or rotations. For more information see the description of }{\f9\uldb Subtract}{\v\f9 HIDP_SUB}{\f9 
\par 
\par }{\b\f9 Multiply}{\f9 
\par This button multiplies two scalars or  vectors. For more information see the description of }{\f9\uldb Multiply}{\v\f9 HIDP_MUL}{\f9 
\par 
\par }{\b\f9 Divide}{\f9 
\par This button divides two scalars or  vectors. For more information see the description of }{\f9\uldb Divide}{\v\f9 HIDP_DIV}{\f9 
\par }\pard\plain \s16\widctlpar\adjustright \fs20 {\f9 
\par }\pard\plain \widctlpar\adjustright \fs20 {\b\f9 Dot}{\f9 
\par This button takes the dot product of two vectors. For more information see the description of }{\f9\uldb Dot Product}{\v\f9 HIDP_DOT}{\f9 
\par 
\par }{\b\f9 Cross}{\f9 
\par This button takes the cross product of two vectors. For more information see the description of }{\f9\uldb Cross Product}{\v\f9 HIDP_CROSS}{\f9 
\par }\pard\plain \s16\widctlpar\adjustright \fs20 {\f9 
\par }\pard\plain \widctlpar\adjustright \fs20 {\b\f9 Angle}{\f9 
\par This button calculates the angle between two vectors. For more information see the description of }{\f9\uldb Angle}{\v\f9 HIDP_ANGLE}{\f9 
\par 
\par }{\b\f9 Normalise}{\f9 
\par This button makes the length of the vector in A equal to 1. If A is a rotation, it\rquote s rotation axis (the first three components) are normalised instead. For more information see the description of }{\f9\uldb Normalise}{\v\f9 HIDP_NORM}{\f9 
\par 
\par }{\b\f9 Reflect}{\f9 
\par This button reflects the vector in A in any axis. Select axes to reflect in by checking boxes in the Reflect dialog box. For more information see the description of }{\f9\uldb Reflect}{\v\f9 HIDP_REFLECT}{\f9 
\par 
\par }{\b\f9 Length}{\f9 
\par This button calculates the length of the vector in A. For more information see the description of }{\f9\uldb Length}{\v\f9 HIDP_LENGTH}{\f9 
\par 
\par For more information on the controls shown in the other tabs, click one of the following links:
\par }\pard\plain \s16\fi720\widctlpar\adjustright \fs20 {\f9\uldb Scalar Tab}{\v\f9 HIDD_SCALAR_TAB}{\f9 
\par }\pard\plain \fi720\widctlpar\adjustright \fs20 {\f9\uldb Rotation Tab}{\v\f9 HIDD_ROTATION_TAB}{\f9 
\par }\pard \widctlpar\adjustright {\f9 
\par }\pard \sl240\slmult0\widctlpar\adjustright {\f9 \page }{\cs15\fs16\up6 #{\footnote \pard\plain \sl240\slmult0\widctlpar\adjustright \fs20 {\cs15\fs16\up6 #}{ HIDD_SCALAR_TAB}}${\footnote \pard\plain \s16\nowidctlpar\adjustright \fs20 {\cs15\fs16\up6 $}{
 Scalar Tab}}}{\fs16\up6  }{\b\f9\fs24\up6  Scalar Tab}{\f9 
\par 
\par }\pard\plain \s16\sl240\slmult0\widctlpar\adjustright \fs20 {\f9 This tab contains operations that can be applied to }{\f9\uldb scalar}{\v\f9 HID_DATA_TYPES}{\f9 . values.
\par }\pard\plain \widctlpar\adjustright \fs20 {\f9 
\par }{\b\f9 Add}{\f9 
\par This button adds two scalars, vectors or rotations. For more information see the description of }{\f9\uldb Add}{\v\f9 HIDP_ADD}{\f9 
\par 
\par }{\b\f9 Subtract}{\f9 
\par This button subtracts two scalars, vectors or rotations. For more information see the description of }{\f9\uldb Subtract}{\v\f9 HIDP_SUB}{\f9 
\par 
\par }{\b\f9 Multiply}{\f9 
\par This button multiplies two scalars or  vectors. For more information see the description of }{\f9\uldb Multiply}{\v\f9 HIDP_MUL}{\f9 
\par 
\par }{\b\f9 Divide}{\f9 
\par This button divides two scalars or  vectors. For more information see the description of }{\f9\uldb Divide}{\v\f9 HIDP_DIV}{\f9 
\par }\pard\plain \s16\widctlpar\adjustright \fs20 {\f9 
\par }\pard\plain \widctlpar\adjustright \fs20 {\b\f9 Convert}{\f9 
\par This button converts the scalar value in A into degrees or radians, depending on the setting of the }{\f9\uldb angle type}{\v\f9 HIDP_ANGLE_TYPE}{\f9  in the main 
dialog. It is assumed that the input value is in the other angle type. For more information see the description of }{\f9\uldb Convert}{\v\f9 HIDP_CONVERT}{\f9 
\par }\pard\plain \s16\widctlpar\adjustright \fs20 {\f9 
\par }\pard\plain \widctlpar\adjustright \fs20 {\b\f9 Pi}{\f9 
\par This button copies the value of Pi into the result box.
\par 
\par }{\b\f9 Sin}{\f9 
\par This button calculates the sine of the value in A. If the Invert box is checked, this button performs an inverse sine. The angle type of the value in A is set using the }{\f9\uldb angle type}{\v\f9 HIDP_ANGLE_TYPE}{\f9 
 radio buttons in the main dialog. For more information see the description of }{\f9\uldb Sine}{\v\f9 HIDP_SIN}{\f9 
\par }\pard\plain \s16\widctlpar\adjustright \fs20 {\f9 
\par }\pard\plain \widctlpar\adjustright \fs20 {\b\f9 Cos}{\f9 
\par This button calculates the cosine of the value in A. If the Invert box is checked, this button performs an inverse cosine. The angle type of the value in A is set using the }{\f9\uldb angle type}{\v\f9 HIDP_ANGLE_TYPE}{\f9  radio buttons in the m
ain dialog. For more information see the description of }{\f9\uldb Cosine}{\v\f9 HIDP_COS}{\f9 
\par 
\par }{\b\f9 Tan}{\f9 
\par This button calculates the tangent of the value in A. If the Invert box is checked, this button performs an inverse tangent. The angle type of the value in A is set using the }{\f9\uldb angle type}{\v\f9 HIDP_ANGLE_TYPE}{\f9 
 radio buttons in the main dialog. For more information see the description of }{\f9\uldb Tangent}{\v\f9 HIDP_TAN}{\f9 
\par 
\par }\pard\plain \s16\widctlpar\adjustright \fs20 {\b\f9 Invert}{\f9 
\par }\pard\plain \widctlpar\adjustright \fs20 {\f9 This button sets whether normal or inverse trigonometric functions are performed when the Sine, Cosine and Tangent buttons are pressed.
\par 
\par For more information on the controls shown in the other tabs, click one of the following links:
\par }\pard\plain \s16\fi720\widctlpar\adjustright \fs20 {\f9\uldb Vector Tab}{\v\f9 HIDD_VECTOR_TAB}{\f9 
\par }\pard\plain \fi720\widctlpar\adjustright \fs20 {\f9\uldb Rotation Tab}{\v\f9 HIDD_ROTATION_TAB}{\f9 
\par }\pard \widctlpar\adjustright {\f9 
\par }\pard \sl240\slmult0\widctlpar\adjustright {\f9 \page }{\cs15\fs16\up6 #{\footnote \pard\plain \sl240\slmult0\widctlpar\adjustright \fs20 {\cs15\fs16\up6 #}{ HIDD_ROTATION_TAB}}${\footnote \pard\plain \s16\nowidctlpar\adjustright \fs20 {\cs15\fs16\up6 $}
{ Rotation Tab}}}{\fs16\up6  }{\b\f9\fs24\up6  Rotation Tab}{\f9 
\par 
\par }\pard\plain \s16\sl240\slmult0\widctlpar\adjustright \fs20 {\f9 This tab contains operations that can be applied to }{\f9\uldb axis-angle rotations}{\v\f9 HID_DATA_TYPES}{\f9 .
\par }\pard\plain \widctlpar\adjustright \fs20 {\f9 
\par }{\b\f9 Add}{\f9 
\par This button adds two scalars, vectors or rotations. For more information see the description of }{\f9\uldb Add}{\v\f9 HIDP_ADD}{\f9 
\par 
\par }{\b\f9 Subtract}{\f9 
\par This button subtracts two scalars, vectors or rotations. For more information see the description of }{\f9\uldb Subtract}{\v\f9 HIDP_SUB}{\f9 
\par }\pard\plain \s16\widctlpar\adjustright \fs20 {\f9 
\par }\pard\plain \widctlpar\adjustright \fs20 {\b\f9 Normalise}{\f9 
\par This button makes the length of the vector in A equal to 1. If A is a rotation, it\rquote s rotation axis (the first three components) are normalised instead. For more information see the description of }{\f9\uldb Normalise}{\v\f9 HIDP_NORM}{\f9 
\par 
\par }{\b\f9 Invert}{\f9 
\par This button inverts the rotation in A. For more information, see the description of }{\f9\uldb Invert}{\v\f9 HIDP_INVERT}{\f9 
\par 
\par }{\b\f9 Rotate Vector}{\f9 
\par This button uses one rotation and one vector. The two inputs can be in either input box, the order is not important. The vector will be rotated by the value of the rotation. For more information, see the description of }{\f9\uldb Rotate Vector}{\v\f9 
HIDP_ROTATE}{\f9 
\par 
\par For more information on the controls shown in the other tabs, click one of the following links:
\par }\pard\plain \s16\fi720\widctlpar\adjustright \fs20 {\f9\uldb Vector Tab}{\v\f9 HIDD_VECTOR_TAB}{\f9 
\par }\pard\plain \fi720\widctlpar\adjustright \fs20 {\f9\uldb Scalar Tab}{\v\f9 HIDD_SCALAR_TAB}{\f9 
\par }\pard \sl240\slmult0\widctlpar\adjustright {\f9 
\par \page }{\cs15\fs16\up6 #{\footnote \pard\plain \sl240\slmult0\widctlpar\adjustright \fs20 {\cs15\fs16\up6 #}{ HID_DATA_TYPES}}${\footnote \pard\plain \s16\nowidctlpar\adjustright \fs20 {\cs15\fs16\up6 $}{ Data Types}}}{\fs16\up6  }{\b\f9\fs24\up6 
 Data Types}{\f9 
\par }\pard\plain \s16\sl240\slmult0\widctlpar\adjustright \fs20 {\f9 
\par }\pard\plain \sl240\slmult0\widctlpar\adjustright \fs20 {\f9 SpinDoctor can operate upon three different types of data, described here:
\par 
\par }{\cs15\f9\fs16\up6 #{\footnote \pard\plain \s16\nowidctlpar\adjustright \fs20 {\cs15\fs16\up6 #}{ HIDP_SCALAR_TYPE}}}{\b\f9 Scalar}{\f9 
\par }\pard\plain \s16\sl240\slmult0\widctlpar\adjustright \fs20 {\f9 This is a single number, representing a single scalar value, like a length or an angle.
\par }{\i\f9 Examples:
\par }\pard \s16\fi720\sl240\slmult0\widctlpar\adjustright {\f2 1
\par 3.2
\par 1.23e-4
\par }\pard \s16\sl240\slmult0\widctlpar\adjustright {\f9 
\par }\pard\plain \sl240\slmult0\widctlpar\adjustright \fs20 {\cs15\f9\fs16\up6 #{\footnote \pard\plain \s16\nowidctlpar\adjustright \fs20 {\cs15\fs16\up6 #}{ HIDP_VECTOR_TYPE}}}{\b\f9 3D Vector}{\f9 
\par }\pard\plain \s16\sl240\slmult0\widctlpar\adjustright \fs20 {\f9 This is a set of three numbers, representing components of a 3D vector. The components are entered in the order X, Y then Z..
\par }{\i\f9 Examples:
\par }\pard \s16\fi720\sl240\slmult0\widctlpar\adjustright {\f2 1 2 3
\par 9.8 10.2 11.3
\par }\pard \s16\li720\sl240\slmult0\widctlpar\adjustright {\f2 3.23e-4 2.3e-3 1e-2
\par }\pard \s16\sl240\slmult0\widctlpar\adjustright {\f9 
\par }\pard\plain \sl240\slmult0\widctlpar\adjustright \fs20 {\cs15\f9\fs16\up6 #{\footnote \pard\plain \s16\nowidctlpar\adjustright \fs20 {\cs15\fs16\up6 #}{ HIDP_ROTATION_TYPE}}}{\b\f9 Axis-Angle Rotation}{\f9 
\par This is a set of four numbers, which define a 3D axis-angle rotation The first three numbers are a 3D vector, as defined above, which define the axis of rotation. The last number is a value in radians to rotate around that vector. As SpinDoctor
 uses a right-handed coordinate system, positive rotations go in a CLOCKWISE direction when looking down the axis away from the origin. 
\par }\pard\plain \s16\sl240\slmult0\widctlpar\adjustright \fs20 {\i\f9 Examples:
\par }\pard \s16\fi720\sl240\slmult0\widctlpar\adjustright {\f2 0 0 1 1.57
\par 2.3 4.3 5.6 1
\par 9 7 -2 -1.09
\par }\pard \s16\sl240\slmult0\widctlpar\adjustright {\f9 
\par }\pard\plain \sl240\slmult0\widctlpar\adjustright \fs20 {\f9 \page }{\cs15\fs16\up6 #{\footnote \pard\plain \sl240\slmult0\widctlpar\adjustright \fs20 {\cs15\fs16\up6 #}{ HID_OPERATIONS}}${\footnote \pard\plain \s16\nowidctlpar\adjustright \fs20 {
\cs15\fs16\up6 $}{ All Operations}}}{\fs16\up6  }{\b\f9\fs24\up6  Operations}{\f9 
\par }\pard \widctlpar\adjustright {\f9 
\par SpinDoctor can perform the following operations. The operations themselves are described, along with a summary of which }{\f9\uldb data types}{\v\f9\uld HID_DATA_}{\v\f9 TYPES}{\f9  they can be performed upon.
\par 
\par }{\cs15\f9\fs16\up6 #{\footnote \pard\plain \s16\nowidctlpar\adjustright \fs20 {\cs15\fs16\up6 #}{ HIDP_ADD}}}{\b\f9 Add}{\f9 
\par }\pard\plain \s16\widctlpar\adjustright \fs20 {\f9 A:}{\i\f9 vector }{\f9 B:}{\i\f9 vector}{\f9 
\par This adds two vectors componentwise.
\par \tab e.g. 2 2 2 + 4 5 6 = 6 7 8
\par 
\par A:}{\i\f9 scalar}{\f9  B:}{\i\f9 scalar}{\f9 
\par This adds two numbers.
\par \tab e.g. 2 + 4 = 6
\par 
\par A:}{\i\f9 rotation}{\f9  B:}{\i\f9 rotation}{\f9 
\par This adds two rotations together, which is the same as performing the rotation in A followed by the rotation in B. The rotations are converted to quaternions, multiplied, and then converted back.
\par }\pard\plain \widctlpar\adjustright \fs20 {\f9 
\par }{\cs15\f9\fs16\up6 #{\footnote \pard\plain \s16\nowidctlpar\adjustright \fs20 {\cs15\fs16\up6 #}{ HIDP_SUB}}}{\b\f9 Subtract}{\f9 
\par }\pard\plain \s16\widctlpar\adjustright \fs20 {\f9 A:}{\i\f9 vector }{\f9 B:}{\i\f9 vector}{\f9 
\par This subtracts two vectors componentwise.
\par \tab e.g. 2 2 2 - 4 5 6 = -2 -3 -4
\par 
\par A:}{\i\f9 scalar}{\f9  B:}{\i\f9 scalar}{\f9 
\par This subtracts two numbers.
\par \tab e.g. 4 - 2 = 2
\par 
\par A:}{\i\f9 rotation}{\f9  B:}{\i\f9 rotation}{\f9 
\par This subtracts two rotations, and is performed by adding the rotation in A and the inverse of the rotation in B. The rotations are converted to quaternions, multiplied, and then converted back.
\par 
\par }\pard\plain \widctlpar\adjustright \fs20 {\cs15\f9\fs16\up6 #{\footnote \pard\plain \s16\nowidctlpar\adjustright \fs20 {\cs15\fs16\up6 #}{ HIDP_MUL}}}{\b\f9 Multiply}{\f9 
\par }\pard\plain \s16\widctlpar\adjustright \fs20 {\f9 A:}{\i\f9 vector }{\f9 B:}{\i\f9 vector}{\f9 
\par This multiplies two vectors componentwise, and is equivalent to scaling by different amounts in different directions.
\par \tab e.g. 1 2 3 * 4 5 6 = 4 10 18
\par 
\par A:}{\i\f9 scalar}{\f9  B:}{\i\f9 scalar}{\f9 
\par This multiplies two numbers.
\par \tab e.g. 4 * 2 = 8
\par 
\par A:}{\i\f9 vector}{\f9  B:}{\i\f9 scalar}{\f9 
\par A:}{\i\f9 scalar}{\f9  B:}{\i\f9 vector}{\f9 
\par This multiplies a vector by the same amount in each direction.
\par \tab e.g. 4 4 4 * 2 = 8 8 8
\par }\pard\plain \widctlpar\adjustright \fs20 {\f9 
\par }{\cs15\f9\fs16\up6 #{\footnote \pard\plain \s16\nowidctlpar\adjustright \fs20 {\cs15\fs16\up6 #}{ HIDP_DIV}}}{\b\f9 Divide}{\f9 
\par }\pard\plain \s16\widctlpar\adjustright \fs20 {\f9 A:}{\i\f9 vector }{\f9 B:}{\i\f9 vector}{\f9 
\par This divides two vectors componentwise, and is equivalent to an inverse scaling by different amounts in different directions.
\par \tab e.g. 1 2 3 / 4 5 6 = 0.25 0.4 0.5
\par 
\par A:}{\i\f9 scalar}{\f9  B:}{\i\f9 scalar}{\f9 
\par This divides two numbers.
\par \tab e.g. 4 / 2 = 2
\par 
\par A:}{\i\f9 vector}{\f9  B:}{\i\f9 scalar}{\f9 
\par A:}{\i\f9 scalar}{\f9  B:}{\i\f9 vector}{\f9 
\par This divides a  vector by the same amount in each direction.
\par \tab e.g. 4 4 4 / 2 = 2 2 2
\par }\pard\plain \widctlpar\adjustright \fs20 {\f9 
\par }{\cs15\f9\fs16\up6 #{\footnote \pard\plain \s16\nowidctlpar\adjustright \fs20 {\cs15\fs16\up6 #}{ HIDP_DOT}}}{\b\f9 Dot Product}{\f9 
\par }\pard\plain \s16\widctlpar\adjustright \fs20 {\f9 A:}{\i\f9 vector }{\f9 B:}{\i\f9 vector}{\f9 
\par This evalulates the dot product of two vectors, otherwise called the }{\i\f9 inner}{\f9  product. This is defined as:
\par \tab A.B = |A| |B| cos }{\i\f9 theta}{\f9 
\par Where }{\i\f9 theta}{\f9  is the angle between the two and |A| denotes the length of vector A.
\par The dot product can also be defined as:
\par \tab A.B = Xa* Xb+ Ya* Yb+ Za* Zb
\par 
\par }\pard\plain \widctlpar\adjustright \fs20 {\cs15\f9\fs16\up6 #{\footnote \pard\plain \s16\nowidctlpar\adjustright \fs20 {\cs15\fs16\up6 #}{ HIDP_CROSS}}}{\b\f9 Cross product}{\f9 
\par }\pard\plain \s16\widctlpar\adjustright \fs20 {\f9 A:}{\i\f9 vector }{\f9 B:}{\i\f9 vector}{\f9 
\par This evalulates the cross product of two vectors, otherwise called the }{\i\f9 outer}{\f9  or }{\i\f9 vector}{\f9 
 product. The cross product of two vectors is the normal of the plane formed by the two vectors. The length of the resulting vector is proportional to the angle between the two vectors.
\par 
\par }\pard\plain \widctlpar\adjustright \fs20 {\cs15\f9\fs16\up6 #{\footnote \pard\plain \s16\nowidctlpar\adjustright \fs20 {\cs15\fs16\up6 #}{ HIDP_ANGLE}}}{\b\f9 Angle}{\f9 
\par }\pard\plain \s16\widctlpar\adjustright \fs20 {\f9 A:}{\i\f9 vector }{\f9 B:}{\i\f9 vector}{\f9 
\par This calculates the angle formed by two vectors. This is calculated using the dot product of the two vectors and their lengths.
\par \tab Angle(A,B) = acos(A.B / (|A| |B|)
\par The result is displayed in degrees or radians, depending on the angle type setting.
\par 
\par }\pard\plain \widctlpar\adjustright \fs20 {\cs15\f9\fs16\up6 #{\footnote \pard\plain \s16\nowidctlpar\adjustright \fs20 {\cs15\fs16\up6 #}{ HIDP_NORM}}}{\b\f9 Normalise}{\f9 
\par }\pard\plain \s16\widctlpar\adjustright \fs20 {\f9 A:}{\i\f9 vector}{\f9 
\par This scales a vector so that it\rquote s length is equal to 1.
\par \tab Norm(A) = A / |A|
\par 
\par A:}{\i\f9 rotation}{\f9 
\par This normalises the axis vector of the rotation.
\par 
\par }\pard\plain \widctlpar\adjustright \fs20 {\cs15\f9\fs16\up6 #{\footnote \pard\plain \s16\nowidctlpar\adjustright \fs20 {\cs15\fs16\up6 #}{ HIDP_REFLECT}}#{\footnote \pard\plain \s16\nowidctlpar\adjustright \fs20 {\cs15\fs16\up6 #}{ HIDD_REFLECT}}}{\b\f9 
Reflect}{\f9 
\par }\pard\plain \s16\widctlpar\adjustright \fs20 {\f9 A:}{\i\f9 vector}{\f9 
\par This simply inverts the selected components of the vector, reflecting it in the selected planes.
\par 
\par }\pard\plain \widctlpar\adjustright \fs20 {\cs15\f9\fs16\up6 #{\footnote \pard\plain \s16\nowidctlpar\adjustright \fs20 {\cs15\fs16\up6 #}{ HIDP_LENGTH}}}{\b\f9 Length}{\f9 
\par }\pard\plain \s16\widctlpar\adjustright \fs20 {\f9 A:}{\i\f9 vector}{\f9 
\par This calculates the length of the vector as the square root of the sum of the squared components
\par 
\par }\pard\plain \widctlpar\adjustright \fs20 {\cs15\f9\fs16\up6 #{\footnote \pard\plain \s16\nowidctlpar\adjustright \fs20 {\cs15\fs16\up6 #}{ HIDP_CONVERT}}}{\b\f9 Convert}{\f9 
\par }\pard\plain \s16\widctlpar\adjustright \fs20 {\f9 A:}{\i\f9 scalar}{\f9 
\par Depending on the selected angle type, this will convert an angle into the selected angle type. It is assumed that the input is in the other type.
\par \tab Degrees to Radians = multiply by 180/pi
\par \tab Radians to Degrees = multiply by pi/180
\par 
\par }\pard\plain \widctlpar\adjustright \fs20 {\cs15\f9\fs16\up6 #{\footnote \pard\plain \s16\nowidctlpar\adjustright \fs20 {\cs15\fs16\up6 #}{ HIDP_SIN}}}{\b\f9 Sine}{\f9 
\par }\pard\plain \s16\widctlpar\adjustright \fs20 {\f9 A:}{\i\f9 scalar}{\f9 
\par This calculates the sine of the value in A, or the inverse sine if the }{\i\f9 invert}{\f9  box is checked. The calculation is performed in degrees or radians, depending on the angle type setting.
\par 
\par }\pard\plain \widctlpar\adjustright \fs20 {\cs15\f9\fs16\up6 #{\footnote \pard\plain \s16\nowidctlpar\adjustright \fs20 {\cs15\fs16\up6 #}{ HIDP_COS}}}{\b\f9 Cosine}{\f9 
\par }\pard\plain \s16\widctlpar\adjustright \fs20 {\f9 A:}{\i\f9 scalar}{\f9 
\par This calculates the cosine of the value in A, or the inverse cosine if the }{\i\f9 invert}{\f9  box is checked. The calculation is performed in degrees or radians, depending on the angle type setting.
\par 
\par }\pard\plain \widctlpar\adjustright \fs20 {\cs15\f9\fs16\up6 #{\footnote \pard\plain \s16\nowidctlpar\adjustright \fs20 {\cs15\fs16\up6 #}{ HIDP_TAN}}}{\b\f9 Tangent}{\f9 
\par }\pard\plain \s16\widctlpar\adjustright \fs20 {\f9 A:}{\i\f9 scalar}{\f9 
\par This calculates the tangent of the value in A, or the inverse tangent if the }{\i\f9 invert}{\f9  box is checked. The calculation is performed in degrees or radians, depending on the angle type setting.
\par 
\par }\pard\plain \widctlpar\adjustright \fs20 {\cs15\f9\fs16\up6 #{\footnote \pard\plain \s16\nowidctlpar\adjustright \fs20 {\cs15\fs16\up6 #}{ HIDP_INVERT}}}{\b\f9 Invert}{\f9 
\par }\pard\plain \s16\widctlpar\adjustright \fs20 {\f9 A:}{\i\f9 rotation}{\f9 
\par This inverts the rotation in A, which basically inverts the last component of the rotation.
\par 
\par }\pard\plain \widctlpar\adjustright \fs20 {\cs15\f9\fs16\up6 #{\footnote \pard\plain \s16\nowidctlpar\adjustright \fs20 {\cs15\fs16\up6 #}{ HIDP_ROTATE}}}{\b\f9 Rotate Vector}{\f9 
\par }\pard\plain \s16\widctlpar\adjustright \fs20 {\f9 A:}{\i\f9 rotation}{\f9  B:}{\i\f9 vector
\par }{\f9 A:}{\i\f9 vector}{\f9  B:}{\i\f9 rotation}{\f9 
\par This operation rotates the input vector by the input rotation. This is done by converting both the vector and rotation to quaternions and multiplying them. The result is then converted back into a 3D vector.
\par }{
\par }}